#pragma once
#ifndef __FISH_HEADER__
#define __FISH_HEADER__

#include "stdafx.h"
#include "Agent.hpp"
#include "PropertyManager.hpp"

//////////////////////////////////////////////////////////////////////////

class Fish : public Agent
{
protected:
	static int _id;
	Ogre::Entity* _model;
	Ogre::AnimationState* _animationState;
	virtual vec3 calcSteeringForce(float dt);

public:
	Fish(const vec3& pos = vec3::ZERO);
	~Fish();

	virtual AgentType getType() const { return AGENT_FISH; }

	virtual float getMass() const { return PM.fish.mass->getRealValue(); }
	virtual float getRadius() const { return PM.fish.radius->getRealValue(); }
	virtual float getMaxVelocity() const { return PM.fish.maxVelocity->getRealValue(); }
	virtual float getTurnRate() const { return PM.fish.turnRate->getRealValue(); }

	virtual void update(float dt);
	virtual void draw() const;
};

//////////////////////////////////////////////////////////////////////////

#endif // #ifndef __FISH_HEADER__